home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ASCIISRC.ZIP / WATER.C < prev   
C/C++ Source or Header  |  1995-10-14  |  1KB  |  80 lines

  1.  
  2. extern char sin8[];
  3.  
  4. #define cosadd (256)
  5.  
  6. void water(char _seg *dbuffer)
  7. {
  8.     int px1,py1,px2,py2,y;
  9.     static int ownframe=0;
  10.     int tmp1,endframe,tmp2;
  11.     int p,ptmp1,ptmp2,t1,t2;
  12.  
  13.     ownframe++;
  14.  
  15.         px1=((int)(sin8[(-ownframe*7+cosadd)&1023]))-40-64;
  16.         py1=((int)(sin8[(ownframe*6)        &1023]))+25-64;
  17.         px2=((int)(sin8[(ownframe*9+cosadd)&1023]))-40-64;
  18.         py2=((int)(sin8[(ownframe*7)       &1023]))+25-64;
  19.  
  20.         _ES=(int)dbuffer;
  21.         tmp1=0;
  22.         tmp2=50;
  23.         p=tmp1*160;
  24.  
  25.         for(y=tmp1;y<tmp2;y++) {
  26.  
  27.         ptmp1=((px1*px1)+(y-py1)*(y-py1));
  28.         ptmp2=((px2*px2)+(y-py2)*(y-py2));
  29.             asm mov bx,ss:ownframe
  30.             asm shl bx,7
  31.             asm add ptmp1,bx
  32.             asm shl bx,3
  33.             asm sub ptmp2,bx
  34.         t1=px1;
  35.         t2=px2;
  36.         asm shl word ptr px1,1
  37.         asm shl word ptr px2,1
  38.         asm mov cx,80
  39.         asm mov di,p
  40.  
  41.         asm mov bx,1023 // 2046
  42. plasmaloop1:
  43.             asm add word ptr ss:px1,2
  44.             asm mov ax,ss:px1
  45.             asm add ss:ptmp1,ax
  46.  
  47.             asm add word ptr ss:px2,2
  48.             asm mov ax,ss:px2
  49.             asm add ss:ptmp2,ax
  50.  
  51.             asm mov si,ss:ptmp1
  52.             asm sar si,3
  53.             asm and si,bx // 2046
  54.             asm mov al,byte ptr ss:sin8[si]
  55.  
  56.             asm mov si,ss:ptmp2
  57.             asm sar si,4
  58.             asm and si,bx // 2046
  59.             asm mov dl,byte ptr ss:sin8[si]
  60.  
  61.             asm add al,dl
  62.             asm shr al,2
  63.  
  64.             asm stosb
  65.             asm mov al,1
  66.             asm stosb
  67.  
  68.             asm dec cx
  69.             asm jnz plasmaloop1
  70. noloop1:
  71.  
  72.             asm mov ss:p,di
  73.  
  74.             asm mov ax,ss:t2
  75.             asm mov ss:px2,ax
  76.             asm mov ax,ss:t1
  77.             asm mov ss:px1,ax
  78.         }
  79. }
  80.